#pragma once

#include "SourceCode/Renderer/Texture.h"

namespace Hazal
{
	class COpenGLTexture2D : public CTexture2D
	{
	public:
		COpenGLTexture2D(uint32_t unWidth, uint32_t unHeight);

		COpenGLTexture2D(const std::string& strFilePath);

		~COpenGLTexture2D();

	public:
		uint32_t GetWidth() const override { return m_unWidth; }

		uint32_t GetHeight() const override { return m_unHeight; }

		uint32_t GetRendererID() const override { return m_unRendererID; }

		void SetData(void* pData, uint32_t unSize) override;

		void Bind(uint32_t unSlot = 0) const override;

		void Unbind() const override;

		bool operator==(const CTexture& rOther) const override;

	private:
		int32_t m_unWidth, m_unHeight;
		uint32_t m_unRendererID;

		std::string m_strFilePath;
	};
}
